╬πδαΓδσφΦσ

╤σ≥σΓ√σ ∩≡ΦδεµσφΦ 
└Σ≡σ± IP
└Σ≡σ± URL
╩δα±± URL
╤εΩσ≥√
╧ε≥εΩεΓ√σ ±εΩσ≥√
╩δα±± Socket
─α≥απ≡α∞∞φ√σ ±εΩσ≥√
╤Γ τⁿ ± Web
└∩δσ≥ ShowChart
╧≡ΦδεµσφΦ  SocketServ Φ SocketClient
└∩δσ≥ Form

    └∩δσ≥ ShowChart

    ╧ε∩≡εß≤σ∞ ≥σ∩σ≡ⁿ φα ∩≡αΩ≥ΦΩσ ∩≡Φ∞σφΦ≥ⁿ ≥σ⌡φεδεπΦ■ ∩σ≡σΣα≈Φ ⌠αΘδεΓ Φτ Ωα≥αδεπα ±σ≡Γσ≡α Web Γ α∩δσ≥ Σδ  δεΩαδⁿφεΘ εß≡αßε≥ΩΦ. ═α°σ ±δσΣ≤■∙σσ ∩≡ΦδεµσφΦσ ± φατΓαφΦσ∞ ShowChart ∩εδ≤≈ασ≥ φσßεδⁿ°εΘ ≥σΩ±≥εΓ√Θ ⌠αΘδ ± Φ±⌡εΣφ√∞Φ Σαφφ√∞Φ Σδ  ∩ε±≥≡εσφΦ  Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√, ±εΣσ≡µΦ∞εσ Ωε≥ε≡επε ∩≡σΣ±≥αΓδσφε φΦµσ:

    10,20,5,35,11,10,3,6,80,10,20,5,35,11,10,3,6,80

    ┬ ²≥ε∞ ⌠αΘδσ φα⌡εΣ ≥±  ≈Φ±δσφφ√σ τφα≈σφΦ  ≤πδεΓ Σδ  ε≥Σσδⁿφ√⌡ ±σΩ≥ε≡εΓ ΣΦαπ≡α∞∞√, ∩≡Φ≈σ∞ ±≤∞∞α ²≥Φ⌡ τφα≈σφΦΘ ≡αΓφα 360 π≡αΣ≤±α∞. ═α° α∩δσ≥ ∩≡ΦφΦ∞ασ≥ ²≥ε≥ ⌠αΘδ ≈σ≡στ ±σ≥ⁿ Φ ≡Φ±≤σ≥ Ω≡≤πεΓ≤■ ΣΦαπ≡α∞∞≤, ∩εΩαταφφ≤■ φα ≡Φ±. 2.

    pic02.gif (3920 bytes)

    ╨Φ±. 2. ╩≡≤πεΓα  ΣΦαπ≡α∞∞α, ∩ε±≥≡εσφφα  φα ßατσ Φ±⌡εΣφ√⌡ Σαφφ√⌡, ∩εδ≤≈σφφ√⌡ ≈σ≡στ ±σ≥ⁿ

    ╘αΘδ Φ±⌡εΣφ√⌡ Σαφφ√⌡ ταφΦ∞ασ≥ Γ±σπε 49 ßαΘ≥, ∩ε²≥ε∞≤ εφ ∩σ≡σΣασ≥±  ∩ε ±σ≥Φ ε≈σφⁿ ß√±≥≡ε. ┼±δΦ ß√ ∞√ ∩σ≡σΣαΓαδΦ π≡α⌠Φ≈σ±Ωεσ Φτεß≡αµσφΦσ ²≥εΘ ΣΦαπ≡α∞∞√, ±≥α≥Φ≈σ±Ωεσ ΦδΦ ΣΦφα∞Φ≈σ±Ωεσ, ∩εΣπε≥εΓδσφφεσ, φα∩≡Φ∞σ≡, ≡α±°Φ≡σφΦσ∞ ±σ≡Γσ≡α CGI ΦδΦ ISAPI, εß·σ∞ ∩σ≡σΣαΓασ∞√⌡ ∩ε ±σ≥Φ Σαφφ√⌡ ß√δ ß√ φα∞φεπε ßεδⁿ°σ.

    ╚±⌡εΣφ√σ ≥σΩ±≥√ α∩δσ≥α ShowChart

    ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ  ShowChart ∩≡ΦΓσΣσφ Γ δΦ±≥Φφπσ 1.

    ╦Φ±≥Φφπ 1. ╘αΘδ ShowChart.java

    import java.applet.*;
    import java.awt.*;
    import java.net.*;
    import java.io.*;
    import java.util.*;
    public class ShowChart extends Applet
    {
      URL SrcURL;
      Object URLContent;
      int errno = 0;
      String str;
      byte buf[] = new byte[200];
      public String getAppletInfo()
      {
        return "Name: ShowChart";
      }
      public void init()
      {
        try
        {
          SrcURL = new URL(
            "http://frolov/chart.txt");
          try
          {
            InputStream is = SrcURL.openStream();
            is.read(buf);
            str = new String(buf, 0);
          }  
          catch (IOException ioe)
          {
            showStatus("read exception");
            errno = 1;
          }
        }
        catch (MalformedURLException uex)
        {
          showStatus(
            "MalformedURLException exception");
          errno = 2;
        }
      }
      public void paint(Graphics g)
      {
        Integer AngleFromChart = new Integer(0);
        int PrevAngle = 0;
        int rColor, gColor, bColor;
        Dimension dimAppWndDimension = getSize();
        
        g.setColor(Color.yellow);
        g.fillRect(0, 0, 
          dimAppWndDimension.width  - 1, 
          dimAppWndDimension.height - 1);
        g.setColor(Color.black);
        g.drawRect(0, 0, 
          dimAppWndDimension.width  - 1, 
          dimAppWndDimension.height - 1);
        showStatus(str);
        StringTokenizer st =
           new StringTokenizer(str, ",\r\n");
        while(st.hasMoreElements())
        {
          rColor = (int)(255 * Math.random());
          gColor = (int)(255 * Math.random());
          bColor = (int)(255 * Math.random());
          g.setColor(new Color(rColor,
             gColor, bColor));
          String angle = 
            (String)st.nextElement();
          AngleFromChart = new Integer(angle) ;
          g.fillArc(0, 0, 200, 200, 
            PrevAngle, 
            AngleFromChart.intValue());
          PrevAngle += AngleFromChart.intValue();
        }
      }
    }

    ╚±⌡εΣφ√Θ ≥σΩ±≥ ΣεΩ≤∞σφ≥α HTML, ±ετΣαφφεπε αΓ≥ε∞α≥Φ≈σ±ΩΦ Σδ  φα°σπε α∩δσ≥α, ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 2.

    ╦Φ±≥Φφπ 2. ╘αΘδ ShowChart.tmp.html

    <applet
      name="ShowChart"
      code="ShowChart"
      codebase=
      "file:/e:/Sun/Articles/vol12/src/ShowChart"
      width="200"
      height="200"
      align="Top"
      alt="If you had a java-enabled browser,
     you would see an applet here.">
      <hr>If your browser recognized
    the applet tag,
    you would see an applet here.
      <hr>
    </applet>

    ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α α∩δσ≥α ShowChart

    └∩δσ≥ ShowChart ∩εδ≤≈ασ≥ ±εΣσ≡µΦ∞εσ ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡ Σδ  ∩ε±≥≡εσφΦ  Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√ ± ∩ε∞ε∙ⁿ■ Ωδα±±α URL. ╩αΩ Γ√ ≤ΓΦΣΦ≥σ, Σδ  ∩εδ≤≈σφΦ  ±εΣσ≡µΦ∞επε ²≥επε ⌠αΘδα εφε ±ετΣασ≥ ∩ε≥εΩ ΓΓεΣα  Γφ√∞ εß≡ατε∞.

    ╧εδ  Ωδα±±α ShowChart

    ┬ Ωδα±±σ ShowChart ε∩≡σΣσδσφ√ ∩ ≥ⁿ ∩εδσΘ.

    URL SrcURL;
    Object URLContent;
    int errno = 0;
    String str;
    byte buf[] = new byte[200];

    ╧εδσ SrcURL Ωδα±±α URL ⌡≡αφΦ≥ αΣ≡σ± URL ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡ Σδ  Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√. ┬ ∩εδσ URLContent ≥Φ∩α Object ß≤Σσ≥ ∩σ≡σ∩Φ±αφε ±εΣσ≡µΦ∞εσ ²≥επε ⌠αΘδα. ┬ ∩εδσ errno ⌡≡αφΦ≥±  ≥σΩ≤∙ΦΘ ΩεΣ ε°ΦßΩΦ, σ±δΦ εφα ΓετφΦΩδα, ΦδΦ φ≤δσΓεσ τφα≈σφΦσ, σ±δΦ Γ±σ ε∩σ≡α÷ΦΦ ß√δΦ Γ√∩εδφσφ√ ßστ ε°ΦßεΩ.

    ╧εδσ str ⌡≡αφΦ≥ ∩≡Φφ ≥≤■ ±≥≡εΩ≤, Ωε≥ε≡α  ∩≡σΣΓα≡Φ≥σδⁿφε τα∩Φ±√Γασ≥±  Γε Γ≡σ∞σφφ√Θ ß≤⌠σ≡ buf.

    ╠σ≥εΣ init

    ┬ε Γ≡σ∞  ΦφΦ÷ΦαδΦτα÷ΦΦ ∞σ≥εΣ init ±ετΣασ≥ εß·σΩ≥ Ωδα±±α URL Σδ  ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡:

    SrcURL = new URL("http://frolov/chart.txt");

    ╟Σσ±ⁿ Σδ  ≤∩≡ε∙σφΦ  Φ±⌡εΣφεπε ≥σΩ±≥α ∞√ ≤ΩαταδΦ αΣ≡σ± URL ⌠αΘδα Σαφφ√⌡ φσ∩ε±≡σΣ±≥Γσφφε Γ ∩≡επ≡α∞∞σ, εΣφαΩε Γ√ ∞εµσ≥σ ∩σ≡σΣα≥ⁿ ²≥ε≥ αΣ≡σ± α∩δσ≥≤ ≈σ≡στ ∩α≡α∞σ≥≡ Γ ΣεΩ≤∞σφ≥σ HTML.

    ─αδσσ Σδ  φα°σπε εß·σΩ≥α URL ∞√ ±ετΣασ∞ ∩ε≥εΩ ΓΓεΣα Φ ∩εδ≤≈ασ∞ ±εΣσ≡µΦ∞εσ ⌠αΘδα (≥ε σ±≥ⁿ Φ±⌡εΣφ√σ Σαφφ√σ Σδ  ∩ε±≥≡εσφΦ  ΣΦαπ≡α∞∞√):

    InputStream is = SrcURL.openStream();
    is.read(buf);

    ╧≡Φφ ≥√σ Σαφφ√σ τα∩Φ±√Γα■≥±  Γ ß≤⌠σ≡ buf Φ τα≥σ∞ ∩≡σεß≡ατ≤■≥±  Ω ≥Φ∩≤ String ± ∩ε∞ε∙ⁿ■ ±εε≥Γσ≥±≥Γ≤■∙σπε Ωεφ±≥≡≤Ω≥ε≡α:

    str = new String(buf, 0);

    ┼±δΦ ∩≡Φ ±ετΣαφΦΦ εß·σΩ≥α Ωδα±±α URL ΓετφΦΩδε Φ±Ωδ■≈σφΦσ, ∞σ≥εΣ init τα∩Φ±√Γασ≥ Γ ∩εδσ errno ΩεΣ ε°ΦßΩΦ, ≡αΓφ√Θ 2, τα∩Φ±√Γα  ∩≡Φ ²≥ε∞ Γ ±≥≡εΩ≤ ±ε±≥ε φΦ  ß≡α≤τσ≡α ±εεß∙σφΦσ "MalformedURLException exception".

    ┬ ≥ε∞ ±δ≤≈ασ, ΩεπΣα εß·σΩ≥ Ωδα±±α URL ±ετΣαφ ≤±∩σ°φε, α Φ±Ωδ■≈σφΦσ ΓετφΦΩδε Γ ∩≡ε÷σ±±σ ≈≥σφΦ  ±εΣσ≡µΦ∞επε ⌠αΘδα, Γ ∩εδσ errno τα∩Φ±√Γασ≥±  τφα≈σφΦσ 1, α Γ ±≥≡εΩ≤ ±ε±≥ε φΦ  ß≡α≤τσ≡α - ±εεß∙σφΦσ "read exception".

    ╠σ≥εΣ paint

    ╧ε±δσ ≡α±Ω≡α°ΦΓαφΦ  ⌠εφα εΩφα α∩δσ≥α Φ ≡Φ±εΓαφΦ  ΓεΩ≡≤π φσπε ≡α∞ΩΦ ∞σ≥εΣ paint ∩≡Φ±≥≤∩ασ≥ Ω ∩ε±≥≡εσφΦ■ Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√. ╧≡Φφ ≥√σ Σαφφ√σ ε≥εß≡αµα■≥±  Γ ±≥≡εΩσ ±ε±≥ε φΦ  ß≡α≤τσ≡α:

    showStatus(sChart);

    ─αδσσ ±ετΣασ≥±  ≡ατßε≡∙ΦΩ ±≥≡εΩΦ Φ±⌡εΣφ√⌡ Σαφφ√⌡:

    StringTokenizer st = 
      new StringTokenizer(sChart, ",\r\n");

    ┬ Ωα≈σ±≥Γσ ≡ατΣσδΦ≥σδσΘ Σδ  ²≥επε ≡ατßε≡∙ΦΩα ≤Ωατ√Γασ≥±  τα∩ ≥α , ±Φ∞Γεδ ΓετΓ≡α≥α Ωα≡σ≥ΩΦ Φ ∩σ≡σΓεΣα ±≥≡εΩΦ.

    ╨Φ±εΓαφΦσ ±σΩ≥ε≡εΓ ΣΦαπ≡α∞∞√ Γ√∩εδφ σ≥±  Γ ÷ΦΩδσ, ≤±δεΓΦσ∞ Γ√⌡εΣα Φτ Ωε≥ε≡επε  Γδ σ≥±  ταΓσ≡°σφΦσ ≡ατßε≡α ±≥≡εΩΦ Φ±⌡εΣφ√⌡ Σαφφ√⌡:

    while(st.hasMoreElements())
    {
      . . .
    }

    ─δ  ≥επε ≈≥εß√ ±σΩ≥ε≡√ ΣΦαπ≡α∞∞√ φσ ±δΦΓαδΦ±ⁿ, εφΦ Σεδµφ√ Φ∞σ≥ⁿ ≡ατφ√Θ ÷Γσ≥. ╓Γσ≥ ±σΩ≥ε≡α ∞εµφε ß√δε ß√ ∩σ≡σΣαΓα≥ⁿ Γ∞σ±≥σ ±ε τφα≈σφΦσ∞ ≤πδα ≈σ≡στ ⌠αΘδ Φ±⌡εΣφ√⌡ Σαφφ√⌡, εΣφαΩε ∞√ ∩≡Φ∞σφΦδΦ ßεδσσ ∩≡ε±≥εΘ ±∩ε±εß ≡α±Ωα≡°ΦΓαφΦ  ±σΩ≥ε≡εΓ - Γ ±δ≤≈αΘφ√σ ÷Γσ≥α. ╠√ ∩εδ≤≈ασ∞ ±δ≤≈αΘφ√σ Ωε∞∩εφσφ≥√ ÷Γσ≥α ±σΩ≥ε≡α, α τα≥σ∞ Γ√ßΦ≡ασ∞ ÷Γσ≥ Γ Ωεφ≥σΩ±≥ ε≥εß≡αµσφΦ :

    rColor = (int)(255 * Math.random());
    gColor = (int)(255 * Math.random());
    bColor = (int)(255 * Math.random());
    g.setColor(new Color(rColor,
       gColor, bColor));

    ╤ ∩ε∞ε∙ⁿ■ ∞σ≥εΣα nextElement ∞√ ∩εδ≤≈ασ∞ ε≈σ≡σΣφεσ τφα≈σφΦσ ≤πδα ±σΩ≥ε≡α Φ ±ε⌡≡αφ σ∞ σπε Γ ∩σ≡σ∞σφφεΘ angle:

    String angle = (String)st.nextElement();

    ─αδσσ ± ∩ε∞ε∙ⁿ■ Ωεφ±≥≡≤Ω≥ε≡α Ωδα±±α Integer ²≥ε τφα≈σφΦσ ∩≡σεß≡ατ≤σ≥±  Γ ≈Φ±δσφφεσ:

    AngleFromChart = new Integer(angle);

    ╨Φ±εΓαφΦσ ±σΩ≥ε≡α Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√ Γ√∩εδφ σ≥±  ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣα fillArc:

    g.fillArc(0, 0, 200, 200, 
      PrevAngle, AngleFromChart.intValue());

    ┬ Ωα≈σ±≥Γσ φα≈αδⁿφεπε τφα≈σφΦ  ≤πδα ±σΩ≥ε≡α Φ±∩εδⁿτ≤σ≥±  τφα≈σφΦσ Φτ ∩σ≡σ∞σφφεΘ PrevAngle. ╤≡ατ≤ ∩ε±δσ ΦφΦ÷ΦαδΦτα÷ΦΦ Γ ²≥≤ ∩σ≡σ∞σφφ≤■ τα∩Φ±√Γασ≥±  φ≤δσΓεσ τφα≈σφΦσ.

    ╩εφσ≈φ√Θ ≤πεδ ±σΩ≥ε≡α ταΣασ≥±  ΩαΩ AngleFromChart.intValue(), ≥ε σ±≥ⁿ ≤Ωατ√Γασ≥±  τφα≈σφΦσ, ∩εδ≤≈σφφεσ Φτ ∩≡Φφ ≥επε ∩ε ±σ≥Φ ⌠αΘδα Φ±⌡εΣφ√⌡ Σαφφ√⌡.

    ╧ε±δσ ταΓσ≡°σφΦ  ≡Φ±εΓαφΦ  ε≈σ≡σΣφεπε ±σΩ≥ε≡α Ω≡≤πεΓεΘ ΣΦαπ≡α∞∞√ φα≈αδⁿφεσ τφα≈σφΦσ PrevAngle ≤ΓσδΦ≈ΦΓασ≥±  φα ΓσδΦ≈Φφ≤ ≤πδα φα≡Φ±εΓαφφεπε ±σΩ≥ε≡α:

    PrevAngle += AngleFromChart.intValue();


Java | ╧≡εΣ≤Ω≥√ Φ ≡σ°σφΦ  | ╥σ⌡φεδεπΦΦ | ╤σ≡ΓΦ± Φ εß≤≈σφΦσ
╬ Ωε∞∩αφΦΦ | ╧α≡≥φσ≡√ | ═εΓε±≥Φ | ╧εΦ±Ω
Sun Microsystems Inc. Corporate Information Our partners News and Events Search on site Java Computing Products and Solutions Technologies and Researches Education and Service Content